package ObjectInoutStream.project;

import ObjectOutputStream.project.Student;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectInputStream;

/*
      ObjectInputStream 对象的反序列化流（将文件中的对象读取出来叫做反序列化）：extends OutputStream抽象类
    作用：将文件中的对象，以流的方式读取出来叫

   特有的方法：object readObject()：从 ObjectInputStream中读取对象(返回值类型为Object类型)

   使用步骤：1.创建ObjectInputStream对象，构造方法中传入字节输入流
            2.使用ObjectInputStream对象中的readObject()方法，将文件中的对象读取出
            3.释放资源
            4.使用读取出的对象（打印）

   注意：readObject()方法：会抛出文件找不到异常，当不存在对象的class文件是会抛出异常
        反序列化的前提：1.读取类必须实现Serializable接口
                      2.必须存在类对应的class文件
 */
public class PracticeMain {
    public static void main(String[] args) {
       try{
           ObjectInput objectInput = new ObjectInputStream(new FileInputStream("f.txt"));
           Object o = objectInput.readObject();
           objectInput.close();
          // System.out.println(o);
           Student s = (Student) o;//类型转化
           System.out.println(s.getAge()+s.getName());
       }catch (IOException | ClassNotFoundException e){  //ClassNotFoundException抛出readObject()方法异常
           System.out.println(e);
       }
    }
}
